home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Compilers / digital marsC compier / dm / include / Dpmi.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-03-16  |  5.6 KB  |  152 lines

  1. /* Copyright (C) 1986-2001 by Digital Mars. $Revision: 1.1.1.1 $ */
  2. #if __SC__ || __RCC__
  3. #pragma once
  4. #endif
  5.  
  6. #ifndef __DPMI_H
  7. #define __DPMI_H 1
  8.  
  9. #if __cplusplus
  10. extern "C"
  11.   {
  12. #endif
  13.  
  14. #pragma pack()
  15.  
  16. typedef struct TINFO
  17.   {
  18.   unsigned short    BufferSize;
  19.   void __far *        (*RealModeSaveFunction)(unsigned short Operation,void __far *Buffer);
  20.   void __far *        (*PModeSaveFunction)(unsigned short Operation,void __far *Buffer);
  21.   }
  22. Info_t;
  23.  
  24. typedef struct TMEMINFO
  25.   {
  26.   unsigned long    LargestContiguousBlock;
  27.   unsigned long    MaxunloackedPageAllocation;
  28.   unsigned long    MaxLoackedPageAllocation;
  29.   unsigned long    PagesOfLinearSpace;
  30.   unsigned long    TotalUnlockedPages;
  31.   unsigned long    TotalFreePages;
  32.   unsigned long    TotalPhysicalPages;
  33.   unsigned long    FreePagesOfLinearSpace;
  34.   unsigned long    SizeOfPagingPartition;
  35.   unsigned long    Reserved[3];
  36.   }
  37. MemInfo_t;
  38.  
  39. typedef struct TSWITCHTABLE
  40.   {
  41.   unsigned short    newDS;
  42.   unsigned short    newES;
  43.   unsigned short    newSS;
  44.   unsigned short    newCS;
  45.   unsigned long        newIP;    /* upper 16 bits invalid in 16-bit mode */
  46.   unsigned long        newSP;    /* upper 16 bits invalid in 16-bit mode */
  47.   }
  48. SwitchTable_t;
  49.  
  50. typedef struct TSWITCHFUNCTION
  51.   {
  52.   void __far *    (*RealModeSwitchFunction)(void __far *SwitchTable);
  53.   void __far *    (*PModeSwitchFunction)(void __far *SwitchTable);
  54.   }
  55. SwitchFunction_t;
  56.  
  57. typedef struct TENVIRON
  58.   {
  59.   unsigned char     MajorVersion;
  60.   unsigned char     MinorVersion;
  61.   unsigned short    Flags;
  62.   unsigned char     ProcessorType;
  63.   unsigned char     MasterPICInterrupt;
  64.   unsigned char     SlavePICInterrupt;
  65.   }
  66. Environ_t;
  67.  
  68. typedef struct TLINEAR
  69.   {
  70.   unsigned long     Handle;
  71.   unsigned long     LinearAddress;
  72.   }
  73. Linear_T;
  74.  
  75. #pragma pack(__DEFALIGN)
  76.  
  77. /* descriptor management services */
  78. short           dpmi_IsRealMode(void);
  79. short           dpmi_AllocLDTDescriptors(unsigned short count);
  80. short           dpmi_SegToDescriptor(unsigned short segment);
  81. short           dpmi_FreeDescriptor(unsigned short segment);
  82. short           dpmi_GetNextDescriptorIncrement(void);
  83. void __far *     dpmi_GetBaseAddress(unsigned short segment);
  84. short           dpmi_SetBaseAddress(unsigned short segment,void __far *linearaddr);
  85. short           dpmi_SetSegLimit(unsigned short segment,unsigned long linearlen);
  86. short           dpmi_SetDescriptorRights(unsigned short segment,unsigned short rights);
  87. short           dpmi_CreateCodeSegAlias(unsigned short segment);
  88. void __far *     dpmi_GetDescriptor(unsigned short segment,void __far *descriptortable);
  89. void __far *     dpmi_SetDescriptor(unsigned short segment,void __far *descriptortable);
  90. short           dpmi_AllocThisLDTDescriptor(unsigned short segment);
  91.  
  92. /* dos memory management services */
  93. short        dpmi_DOSAlloc(unsigned short paragraphs,void __far *results);
  94. short        dpmi_DOSFree(unsigned short segment);
  95. short        dpmi_DOSRealloc(unsigned short segment,unsigned short paragraphs,void __far *results);
  96.  
  97. /* interrupt services */
  98. void __far *    dpmi_GetRealModeVector(unsigned short vector);
  99. short        dpmi_SetRealModeVector(unsigned short vector,void __far *handler);
  100. void __far *    dpmi_GetExceptionHandler(unsigned short exception);
  101. short        dpmi_SetExceptionHandler(unsigned short exception,void __far *handler);
  102. void __far *    dpmi_GetProtectedModeVector(unsigned short exception);
  103. short        dpmi_SetProtectedModeVector(unsigned short exception,void __far *handler);
  104.  
  105. /* translation services */
  106. void __far *    dpmi_SimRealModeInterrupt(unsigned short vector,unsigned short flags,unsigned short commonstack,void __far *callstruct);
  107. void __far *    dpmi_CallRealModeProcWithFarRet(unsigned short flags,unsigned short commonstack,void __far *callstruct);
  108. void __far *    dpmi_CallRealModeProcWithIRet(unsigned short flags,unsigned short commonstack,void __far *callstruct);
  109. void __far *    dpmi_RealModeCallBackAlloc(void __far *funcptr,void __far *callstruct);
  110. short        dpmi_RealModeCallBackFree(void __far *realmodefuncptr);
  111. short        dpmi_GetStateSaveRestoreInfo(void __far *statesavestruct);
  112. short        dpmi_GetRawModeSwitchInfo(void __far *switchstruct);
  113. short        dpmi_GetVersionInfo(void __far *versionstruct);
  114. short        dpmi_GetFreeMemInfo(void __far *freememstruct);
  115. short        dpmi_MemBlockAlloc(unsigned long size,void __far *newmemstruct);
  116. short        dpmi_MemBlockFree(unsigned long memhandle);
  117. short        dpmi_MemBlockRealloc(unsigned long size,unsigned long memhandle,void __far *newmemstruct);
  118.  
  119. /* page locking services */
  120. short        dpmi_LockLinearRegion(void __far *regionptr,unsigned long regionsize);
  121. short        dpmi_UnlockLinearRegion(void __far *regionptr,unsigned long regionsize);
  122. short        dpmi_LockRealModeRegion(void __far *regionptr,unsigned long regionsize);
  123. short        dpmi_UnlockRealModeRegion(void __far *regionptr,unsigned long regionsize);
  124. unsigned long    dpmi_IsPageSize(void);
  125.  
  126. /* demand paging performance tuning */
  127. short        dpmi_MarkAsDemandPage(void __far *regionptr,unsigned long regionsize);
  128. short        dpmi_DiscardPage(void __far *regionptr,unsigned long regionsize);
  129.  
  130. /* physical address mapping */
  131. short        dpmi_IsLinearAddress(void __far *physicalptr,unsigned long regionsize);
  132.  
  133. /* virtual interrupt state functions */
  134. short        dpmi_DisableVirtualInterruptState(void);
  135. short        dpmi_EnableVirtualInterruptState(void);
  136. short        dpmi_IsVirtualIntteruptState(void);
  137.  
  138. /* vendor specific extensions */
  139. void __far *    dpmi_GetVendorAPI(char __far *zstringvendorname);
  140.  
  141. /* debug support */
  142. short        dpmi_SetDebugWatchPoint(void __far *regionptr,short watchpointsize,short watchpointtype);
  143. short        dpmi_ClearDebugWatchPoint(short watchpointhandle);
  144. short        dpmi_IsDebugWatchPointState(short watchpointhandle);
  145. short        dpmi_ResetDebugWatchPoint(short watchpointhandle);
  146.  
  147. #if __cplusplus
  148.   }
  149. #endif
  150.  
  151. #endif
  152.